/**
 * @description 扩展
 * @date 2025.5.15
 * @author wz
 * @midify 2025.5.15
 * @editor wz
 */
import { Button, EventTouch } from "cc";
import { ProxyWnd } from "../module/proxy/ProxyWnd";
import { ProxyBase } from "../module/proxy/ProxyBase";

/**
 * 扩展button原型让其支持代理绑定事件更方便
 */
declare module 'cc' {
    interface Button {
        onClick(proxy: ProxyWnd<ProxyBase>, callback: (event: EventTouch, customData?: any) => void, customData?: any): void;
        clearClick(): void;
    }
}

Button.prototype.onClick = function (comp: ProxyWnd<ProxyBase>, callback: (event: EventTouch, customData?: any) => void, customData?: any) {
    const proxy = comp['_view'] as ProxyBase;
    proxy.setButtonClick(this, callback.bind(comp))
};

Button.prototype.clearClick = function () {
    this.clickEvents = []
}


/**
 * 扩展Date原型让其支持格式化
 */
declare global {
    interface Date {
        formate(fmt: string): string;
    }
}

Date.prototype.formate = function (fmt: string) {
    var o = {
        "M+": this.getMonth() + 1,                          //月份 
        "d+": this.getDate(),                               //日 
        "h+": this.getHours(),                              //小时 
        "m+": this.getMinutes(),                            //分 
        "s+": this.getSeconds(),                            //秒 
        "q+": Math.floor((this.getMonth() + 3) / 3),        //季度 
        "S": this.getMilliseconds()                         //毫秒 
    };
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
    }
    return fmt;
}